﻿#ifndef _GAMESTATE_H_
#define _GAMESTATE_H_

#include <d3d9.h>
#include <d3dx9.h>

class CGameState
{
protected:
	//Các thuộc tính chính của một màn
	bool _IsEnabled;
	LPWSTR _BackgroundPath;
	LPD3DXSPRITE _SpriteHandler;

public:
	LPDIRECT3DSURFACE9 Background; //Hình nền trong màn

public:
	CGameState(LPWSTR BackgroundPath);
	~CGameState();

	virtual void Show();
	virtual void Hide();

	virtual void InitElements(LPDIRECT3DDEVICE9 d3dDevice); 
	virtual void UpdateElements(int t); //Cập nhật các thành phần con
	virtual void DrawElements();

	virtual void ProcessInput(LPDIRECT3DDEVICE9 d3dDevice, int Delta, BYTE *KeyStates);
	virtual void OnKeyDown(int KeyCode);
	virtual void OnKeyUp(int KeyCode);
	

protected:
	int _IsKeyDown(BYTE *KeyStates, int KeyCode);
	LPDIRECT3DSURFACE9 CreateSurfaceFromFile(LPDIRECT3DDEVICE9 d3dDevice, LPWSTR FilePath);
};
#endif